Clock-controlled circuitry may be organised into a plurality of clock domains, where different clock domains operate based on their own clock signals. The clock signals of such different clock domains may be related in some way—for example, they may be derived ultimately from the same global or master clock signal. However, typically different clock domains have clock signals which have different frequencies and/or phases from one another, or phases and/or frequencies which are only nominally (e.g. to differing accuracies) the same. As such, a relationship between the clock signals of different clock domains may vary over time and may be unpredictable or unreliable. Such an architecture may be described in overview as a Global Asynchronous Locally Synchronous (GALS) architecture. One advantage of a GALS architecture may be that the overall amount of clock-tree balancing required may be reduced as compared to an architecture with only a single clock domain. Also, in a GALS architecture it may be possible to control which domains are on and which are off over time, with the domains then acting as power and clock domains.
Where data is transferred from one clock domain to another, timing between those domains can be important. Where the data is for example audio data, which may be packaged in frames and which may need to be handled in a time-critical manner (such as on a real-time basis), it may be desirable to minimize or reduce group delay or avoid audio artefacts related to clock domain crossing to improve end-user experience.
Clock-controlled circuitry naturally finds wide use. For example, most integrated circuits (ICs) use one or more clock signals to synchronise or otherwise control different parts of system circuitry. Circuits operating based on clock signals may be considered synchronous circuits. Examples include processing circuits such as audio-processing circuits (which may handle data such as audio data).
Clock-controlled circuitry may therefore be implemented on ICs or systems within a host device, which may be considered an electrical or electronic device. Examples include a portable and/or battery powered host device such as a mobile telephone, an audio player, a video player, a PDA, a mobile computing platform such as a laptop computer or tablet and/or a games device.
Of course, audio data is merely one example type of data where timing issues can be important in relation to clock domain crossing. Other examples may include video or sensor/transducer (e.g. haptics) data. For convenience, however, the example of audio data will be carried forward herein.
Existing clock-controlled circuitry has been found to have shortcomings, in particular when data is passed or streamed from one clock domain to another. It is desirable to provide improved clock-controlled circuitry, in which data (such as audio data) may be transferred from one clock domain to another in an efficient manner.